1
Проблема аппаратной сортировки
AI032Lesson 7
00:00

В высокопроизводительных устройствах скорость — это жизнь. Представьте, что видеокарта выполняет Z-буферизацию: она должна сортировать миллионы значений глубины в секунду, чтобы определить, какой пиксель находится ближе. Для этого инженеры полагаются на компаратор беззнаковых чисел, упрощённую схему, которая обрабатывает биты от старшего к младшему разряду без какого-либо дополнительного вычислительного издержка.

Провал представления в дополнительном коде

Стандартное представление в дополнительном коде не проходит этот «простой» тест аппаратных средств. Поскольку знаковый бит равен 1 для отрицательных чисел и 0 для положительных, значение, например -1 (111...), по битовому порядку оказывается больше, чем +1 (001...). Это создаёт разрыв, заставляя аппаратные средства использовать сложную, медленную условную логику для определения величины.

Решение через монотонность

Чтобы восстановить эффективность, мы используем кодирование с избытком (представление с смещением). Сдвигая диапазон так, чтобы наименьшее возможное значение соответствовало 000... а наибольшее — 111..., мы гарантируем, что битовая последовательность однозначно определяет числовое значение таким образом, что её лексикографический порядок соответствует точно числовому порядку.

Рис. 7.1: Ошибка в дополнительном кодеРис. 7.2: Выигрыш при кодировании с избытком 3Десятичное | Биты-1 | 111 0 | 000Логический скачок!Десятичное | Биты-3 | 000-2 | 001-1 | 010 0 | 011Монотонный рост

Это свойство позволяет «простым» аппаратным компараторам мгновенно обрабатывать «умные» данные с плавающей запятой.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>